package demo05

/**
 * @author xiaoZhao
 * @date 2022/6/30
 * @describe 构造器
 */
object Test05_Constructor {
  def main(args: Array[String]): Unit = {
    val student = new Student1()
    student.Student1()

    val student1 = new Student1("王五")
    val student3 = new Student1("王五",21)

  }
}

// 无参的主构造器
class Student1(){
  var name: String= _
  var age: Int = _
  println("1.主构造方法被调用 ")

  // 声明辅助构造方法  必须直接或间接的调用主构造器
  def this(name: String){
    // 调用主构造器
    this()
    println("2.辅助构造方法 一 ")
    this.name = name
    println(s"name: $name age: $age")
  }
  def this(name: String,age: Int){
    // 间接调用主构造器
    this(name)
    println("3.辅助构造方法 二 ")
    this.age = age
    println(s"name: $name age: $age")
  }

  def Student1(): Unit = {
    println("一般方法被调用，不是构造方法！！")
  }
}
